
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

'底部容器'

import sys
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext

# 创建一个进度条变量，用于控制进度条的进度
# progress_var = tk.IntVar()

class AppBottom(object):
    def create(self, master, on_label_click):

        self.frame_ = tk.Frame(master, bg='')

        # 创建一个使用自定义样式的 ttk.Progressbar
        # self._progress_bar = ttk.Progressbar(
        #     frame_,
        #     orient="horizontal",  # 水平方向
        #     length=300,  # 进度条长度
        #     height=10,
        #     mode="determinate",  # 进度条模式（determinate 或 indeterminate）
        # )

        # 创建一个Progressbar实例，并设置其高度
        # self._progress_bar = ttk.Progressbar(frame_, orient='horizontal', length=300, mode='determinate')
        # self._progress_bar.pack(fill=tk.X)
        # self._progress_bar.config(value=10, maximum=100)

        # 创建一个 ScrolledText 组件用于显示输出
        self.output_text = scrolledtext.ScrolledText(self.frame_, wrap=tk.WORD, state='normal')
        self.output_text.pack(fill=tk.BOTH, expand=True, pady=(0, 0))

        # output_text.insert(tk.END, "scrolledtext")

        # 重定向标准输出到 Text 组件
        self.redirectText = RedirectText(self.output_text)
        sys.stdout = self.redirectText # 重定向标准输出
        sys.stderr = self.redirectText # 重定向标准错误输出

        # 示例：打印一些内容到控制台
        print("Hello, Tkinter!")
        print("这是控制台的输出，现在显示在 Tkinter 界面中。")

        # 初始化Style
        style = ttk.Style()

        # 设置全局主题（可选）
        # style.theme_use("clam")  # 使用 'clam' 主题，支持背景色设置

        # 定义自定义样式
        style.configure(
            "Custom.Horizontal.TProgressbar",  # 水平进度条样式名称
            # background="lightblue",  # 进度条背景色
            # troughcolor="lightgray",  # 进度条槽的背景色
            # bordercolor="black",  # 进度条边框颜色
            # lightcolor="blue",  # 进度条高亮颜色
            # darkcolor="darkblue",  # 进度条阴影颜色
            # thickness=20,  # 进度条厚度
            height=9
        )

        # 创建一个使用自定义样式的 ttk.Progressbar
        self._progress_bar = ttk.Progressbar(
            self.frame_,
            style="Custom.Horizontal.TProgressbar",  # 应用自定义样式
            orient="horizontal",  # 水平方向
            length=300,  # 进度条长度
            mode="determinate",  # 进度条模式（determinate 或 indeterminate）
        )

        # self._progress_bar.place(relx=0, rely=0, relwidth=1,height=9)
        # self._progress_bar.pack(fill=tk.BOTH, expand=True)
        self._progress_bar.config(value=1, maximum=100)

        # self._progress_bar.place_forget()
        # output_text.pack(fill=tk.BOTH, expand=True, pady=(0, 0))

        return self.frame_
    
    def getProgressBar(self) -> ttk.Progressbar:
        return self._progress_bar
    def getOutText(self) -> scrolledtext.ScrolledText:
        return self.output_text
    def showProgressBar(self):
        self.output_text.pack(fill=tk.BOTH, expand=True, pady=(9, 0))
        self._progress_bar.place(relx=0, rely=0, relwidth=1,height=9)
        return self._progress_bar
    def hideProgressBar(self):
        self._progress_bar.place_forget()
        self.output_text.pack(fill=tk.BOTH, expand=True, pady=(0, 0))

# 自定义一个类，用于重定向标准输出
class RedirectText:
    def __init__(self, text_widget):
        self.text_widget = text_widget

    def write(self, message):
        self.text_widget.insert(tk.END, message)  # 将输出插入到 Text 组件中
        self.text_widget.see(tk.END)  # 自动滚动到末尾

    def flush(self):
        pass  # 需要实现 flush 方法，但可以为空